echo 输出感叹号(含有变量)问题

您所在的位置:网站首页 shell 叹号 搜索 echo 输出感叹号(含有变量)问题

echo 输出感叹号(含有变量)问题

2024-06-27 05:45| 来源: 网络整理| 查看: 265

echo 输出感叹号(含有变量)问题  [vonzhou@localhost kernel]$ name=voznhou [vonzhou@localhost ~]$ myname="$name is me!"bash: !": event not found

因为 !” 会被当作命令行历史替换的符号来处理。不过在shell脚本中没有这样的问题。

不幸的是,你无法使用转义符来转义!:

[vonzhou@localhost ~]$ myname="$name is me\!"[vonzhou@localhost ~]$ ]echo $myname

voznhou is me\!

解决方案之一,使用单引号,即

[vonzhou@localhost ~]$ myname='$name is me!'

[vonzhou@localhost ~]$ echo $myname

$name is me! (这时候虽然可以显示感叹号,但是内部变量$name却失去了原有的内容)

解决方案二,必须使用双引号,可以通过 set +H 来取消命令行历史替换。

[vonzhou@localhost ~]$ set +H

[vonzhou@localhost ~]$ myname="$name is me\!"

[vonzhou@localhost ~]$ echo $myname

voznhou is me\! (---无需转义)

[vonzhou@localhost ~]$ myname="$name is me!"

[vonzhou@localhost ~]$ echo $myname

voznhou is me! (----OK !)

解决方案三,不要将叹号放入“ ”中 

[vonzhou@localhost ~]$ name=vonzhou

[vonzhou@localhost ~]$ myname="$name is me!"

bash: !": event not found

[vonzhou@localhost ~]$ myname="$name is me"!! (---发现只能是一个感叹号,原因暂时不明)

myname="$name is me"name=vonzhou

[vonzhou@localhost ~]$ myname="$name is me"! (OK 了)

[vonzhou@localhost ~]$ echo $myname

vonzhou is me!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3